MySQL


Posted by tzutzu858 on 2020-08-26

MySQL 是什麼?

My 是 MySQL 的聯合創始人 Monty Widenius 的女兒的名字。MySQL 是 My 和 SQL 的組合,這就是 MySQL 命名的由來。它是由 Oracle 支持的開源軟件。所以任何一個人都可以使用 MySQL 而不用支付一毛錢。 另外,如果需要,還可以更改其源代碼或進行二次開發。MySQL 可以在各種平臺上運行 UNIX,Linux,Windows 等。可以將其安裝在服務器甚至桌面系統上。非常多公司都用 MySQL


如何管理資料庫? phpMyAdmin 簡介

資料庫也可以算是程式,所以自然可以用 CLI 來連接到資料庫,或是用 GUI ,比較有名的一套叫做 : phpMyAdmin ,就是個 PHP 檔案,所以就是有人寫好一整套 PHP 網頁來幫你管理資料庫。也有其他套例如 : Adminer ,也是寫在 PHP 上。也可以找直接跑在電腦上的程式,例如 : Sequel Pro

Table schema 簡介

schema 結構

  • Primary key 主鍵(關係鍵),不一定要設定,通常是員工編號或會員帳號之類,最主要且不能重複,所以一定是 Unique ,所以不需要額外再設定 Unique
    符合主鍵必須滿足幾個條件 :
  1. 不能是空的
  2. 不能重複
  • Index 索引
    在資料庫條件下得很明確,可以依造索引去找


MySQL 語法簡介

[Mysql] 資料型態int, float, double, text, char, varchar, blob大小

執行 SQL 語法


SQL 語言分類

  1. DDL (data QUERY LANGUAGE)
  2. DML (data defined LANGUAGE)
  3. DCL (data Manipulation LANGUAGE)

大 -------------------------------> 小

資料庫 資料表 欄位
database table column value

1.查詢資料 Select

SELECT "欄位" FROM "表格名";

where (加上查詢條件) : 可以放多個條件

SELECT "欄位"
FROM "表格名"
WHERE "condition";

AS 關鍵字是用來指定欄位別名或是表格別名的

SELECT "表格別名"."欄位1" AS "欄位別名"
FROM "表格名" AS "表格別名";

2.新增資料 Insert

INSERT INTO 是用來新增資料至某資料表 (table)

INSERT INTO table_name (column1, column2, column3...)
VALUES (value1, value2, value3...);

3.修改資料 Update

UPDATE table_name
SET column1=value1, column2=value2, column3=value3···
WHERE some_column=some_value;

4.刪除資料 Delete

DELETE FROM table_name
WHERE column_name operator value;

眼不見為淨,資料看不到,但並不是真的刪掉,所以還是有機會救回來

where is_deleted = 0

5.offset 與 limit

使用 SQL 的 limit 語句通常會伴隨著「ORDER BY」,否則就已預設排序為主,limit 可以接受一個或兩個數字引數
如果是一個引數 : 那就是你要幾筆資料
如果是兩個引數

  • 第一個引數 : 指定第一個返回記錄行的偏移量
  • 第二個引數 : 要拿的資料數
    SELECT * FROM table ORDER BY id DESC LIMIT 1,10; // 從第 2 筆資料選 10 筆,所以是 2~11筆的資料
    
    如果是從第 2 筆資料選到最後一筆資料,第二個引數寫 -1
    SELECT * FROM table ORDER BY id DESC LIMIT 1,-1; // 從第 2 筆資料選到最後一筆
    

    但是偏移量大,效能不好

如果偏移量大可以使用 offset ,跳過幾筆的意思

SELECT * FROM table ORDER BY id DESC LIMIT 10 OFFSET 5 // 抓 10 筆資料,但跳過最新 5 筆

子查詢只用到了索引列,沒有取實際的資料,所以不涉及到磁碟IO,所以即使是比較大的 offset,查詢速度也不會太差










Related Posts

跟著 GitHub Learning Lab 實作一波

跟著 GitHub Learning Lab 實作一波

在html檔中呈現編輯器JS standard style空格

在html檔中呈現編輯器JS standard style空格

Python 字典 dict 和集合 set 入門教學

Python 字典 dict 和集合 set 入門教學


Comments